package org.example.netty.nio.Buffer;

import java.io.RandomAccessFile;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;

public class MappedByteBufferStu {
    public static void main(String[] args) throws Exception {
        //  创建随机访问文件，并以读写模式打开。
        // RandomAccessFile  是用于访问文件内容的类，它既可以读也可以写。
        // FileOutputStream RandomAccessFile 都可以获取 FileChannel
        // 区别 在于 RandomAccessFile 可以定位到文件的任意位置，而 FileOutputStream 只能从头开始写入。
        RandomAccessFile randomAccessFile = new RandomAccessFile("NioTest9.txt", "rw");
        //  获取文件通道。
        FileChannel fileChannel = randomAccessFile.getChannel();
        //  将文件映射到内存地址，即创建 MappedByteBuffer。
        MappedByteBuffer mappedByteBuffer = fileChannel.map(FileChannel.MapMode.READ_WRITE, 0, 5);
        mappedByteBuffer.put(0, (byte) 'a');
        mappedByteBuffer.put(3, (byte) 'b');
        randomAccessFile.close();
    }
}
